Correlation between Latent Trend and Transmission

  1. mobility trend for all states (spaghetti with mean).

Covariate that describes human mobility. These data come from Unacast. We smooth the raw data from Unacast using a spline fit, resulting in the trajectories of human movement shown below. This covariate is used to reduce baseline transmission. Here we show the mobility trends from all 50 states.

  1. latent trend for all states (spaghetti with mean).
  1. omega for all states (spaghetti with mean).
  1. correlation: predictor = AUC of omega; response = prevalence, or final per capita prevalence.
  1. map of same (correlation, by state)
LS0tCnRpdGxlOiAiRmlndXJlcyIKb3V0cHV0OiBodG1sX25vdGVib29rCmF1dGhvcjogRXJpYyBNYXJ0eQotLS0KCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRSwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGluY2x1ZGU9VFJVRSwgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRSkKbGlicmFyeShoZXJlKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShjb3dwbG90KQpsaWJyYXJ5KHlhcmRzdGljaykKYGBgCgpgYGB7ciBkYXRhfQphbGxfZmlsZXMgPC0gbGlzdC5maWxlcyhwYXRoID0gaGVyZSgib3V0cHV0L2N1cnJlbnQvIiksIHBhdHRlcm4gPSAiLmNzdiIpCnBhcmFtX2ZpbGVzIDwtIGxpc3QuZmlsZXMocGF0aCA9IGhlcmUoIm91dHB1dC9jdXJyZW50LyIpLCBwYXR0ZXJuID0gInBhcmFtcy1uYXR1cmFsLnJkcyIpCnN0YXRlX3N1bW1hcmllcyA8LSB0aWJibGUoKQpzdGF0ZV9wYXJhbWV0ZXJzIDwtIHRpYmJsZSgpCnN0YXRlX2xvZ2xpa3MgPC0gdGliYmxlKCkKc3RhdGVkZiA8LXJlYWRSRFMoaGVyZSgib3V0cHV0L2N1cnJlbnQiLCAic3RhdGVkZi5yZHMiKSkKZm9yKGkgaW4gMTpsZW5ndGgoYWxsX2ZpbGVzKSkgewogIGRvX2ZpbGUgPC0gYWxsX2ZpbGVzW2ldCiAgbG9jYXRpb24gPC0gc3ViKCIuY3N2IiwgIiIsIGRvX2ZpbGUpCiAgc3RhdGVfbWV0YWRhdGEgPC0gc3RhdGVkZiAlPiUgZmlsdGVyKHN0YXRlX2Z1bGwgPT0gc3ViKCIuY3N2IiwgIiIsIGRvX2ZpbGUpKQogIHN0YXRlX3BvcCA8LSBzdGF0ZV9tZXRhZGF0YSAlPiUgcHVsbCh0b3RhbF9wb3ApCiAgc3RhdGVfaW5pdFIwIDwtIHN0YXRlX21ldGFkYXRhICU+JSBwdWxsKGluaXRSMCkKICBzdGF0ZV9iZXRhX3MgPC0gKHN0YXRlX2luaXRSMCouMSkKICAKICB0bXBmaWxlIDwtIGhlcmUoIm91dHB1dC9jdXJyZW50IiwgZG9fZmlsZSkKICB0bXAgPC0gcmVhZC5jc3YodG1wZmlsZSkgJT4lCiAgICBmaWx0ZXIoc2ltX3R5cGUgPT0gInN0YXR1c19xdW8iIHwgaXMubmEoc2ltX3R5cGUpLAogICAgICAgICAgIHZhcmlhYmxlICVpbiUgYygiZGFpbHlfY2FzZXMiLCAiZGFpbHlfZGVhdGhzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjdHVhbF9kYWlseV9jYXNlcyIsICJhY3R1YWxfZGFpbHlfZGVhdGhzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vYmlsaXR5X3RyZW5kIiwgImxhdGVudF90cmVuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJjdW11bGF0aXZlX2FsbF9pbmZlY3Rpb25zIiwgImRhaWx5X2FsbF9pbmZlY3Rpb25zIikpICU+JQogICAgbXV0YXRlKGRhdGUgPSBhcy5EYXRlKGRhdGUpKSAlPiUKICAgIGRwbHlyOjpzZWxlY3QobG9jYXRpb24sIHNpbV90eXBlLCBwZXJpb2QsIGRhdGUsIHZhcmlhYmxlLCBtZWFuX3ZhbHVlKSAlPiUgCiAgICBwaXZvdF93aWRlcihuYW1lc19mcm9tID0gdmFyaWFibGUsIHZhbHVlc19mcm9tID0gbWVhbl92YWx1ZSkgJT4lCiAgICBtdXRhdGUoYmV0YV9zID0gc3RhdGVfYmV0YV9zKSAlPiUgCiAgICBtdXRhdGUob21lZ2EgPSBtb2JpbGl0eV90cmVuZCAqIGxhdGVudF90cmVuZCAqIGJldGFfcykgJT4lIAogICAgcGl2b3RfbG9uZ2VyKGNvbHMgPSAhYyhsb2NhdGlvbiwgc2ltX3R5cGUsIHBlcmlvZCwgZGF0ZSksIAogICAgICAgICAgICAgICAgIG5hbWVzX3RvID0gInZhcmlhYmxlIiwgCiAgICAgICAgICAgICAgICAgdmFsdWVzX3RvID0gIm1lYW5fdmFsdWUiLAogICAgICAgICAgICAgICAgIHZhbHVlc19kcm9wX25hID0gVFJVRSkKCiAgc3RhdGVfc3VtbWFyaWVzIDwtIGJpbmRfcm93cyhzdGF0ZV9zdW1tYXJpZXMsIHRtcCkgIyA/IHdhcyB0aGlzIG1pc3Npbmc/CgogIHRtcHBhcmFtZmlsZSA8LSBoZXJlKCJvdXRwdXQvY3VycmVudCIsIHBhcmFtX2ZpbGVzW2ldKQogIHRtcHBhcmFtcyA8LSByZWFkUkRTKHRtcHBhcmFtZmlsZSkKICB0bXBfbG9nbGlrIDwtIGRhdGEuZnJhbWUobG9jYXRpb24gPSB1bmlxdWUodG1wJGxvY2F0aW9uKSwKICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2xpayA9IHRtcHBhcmFtc1siTG9nTGlrIiwgMl0pCiAgcm5tcyA8LSByb3cubmFtZXModG1wcGFyYW1zKQogIHRtcHBhcmFtcyA8LSB0bXBwYXJhbXMgJT4lCiAgICBtdXRhdGUocGFyYW1ldGVyID0gcm5tcykgJT4lCiAgICBmaWx0ZXIoaXNfZml0dGVkID09ICJ5ZXMiKSAlPiUKICAgIGRwbHlyOjpzZWxlY3QoLWlzX2ZpdHRlZCkgJT4lCiAgICBnYXRoZXIoImtleSIsICJ2YWx1ZSIsIC1wYXJhbWV0ZXIpICU+JQogICAgZmlsdGVyKGtleSA9PSAiWDEiKSAlPiUKICAgIGRwbHlyOjpzZWxlY3QoLWtleSkgJT4lCiAgICBtdXRhdGUobG9jYXRpb24gPSB1bmlxdWUodG1wJGxvY2F0aW9uKSkgJT4lCiAgICBkcGx5cjo6c2VsZWN0KGxvY2F0aW9uLCB2YWx1ZSwgcGFyYW1ldGVyKQogIAogIHN0YXRlX3BhcmFtZXRlcnMgPC0gYmluZF9yb3dzKHN0YXRlX3BhcmFtZXRlcnMsIHRtcHBhcmFtcykKICBzdGF0ZV9sb2dsaWtzIDwtIGJpbmRfcm93cyhzdGF0ZV9sb2dsaWtzLCB0bXBfbG9nbGlrKQp9CgojIEZpeGVkIHBhcmFtZXRlcnMgdGFibGUKYmV0YXNfbmFtZXMgPC0gcm5tc1tncmVwKCJiWzAtOV0rIiwgcm5tcyldICMgZmluZCBwYXJhbWV0ZXJzIHN0YXJ0aW5nIHdpdGggYiBmb2xsb3dlZCBieSBhbnkgbnVtYmVyCnNwbGluZV9jb2VmZmljaWVudHMgPC0gcGFzdGUoIlNwbGluZSBjb2VmZmljaWVudCIsIGdzdWIoImIiLCIiLCBiZXRhc19uYW1lcykpCm5hbWVzKHNwbGluZV9jb2VmZmljaWVudHMpIDwtIGJldGFzX25hbWVzCgpwYXJhbXNfdmVjIDwtIGMoTUlGX0lEID0gIk1JRiBpZCIsIAogICAgICAgICAgICAgICAgTG9nTGlrID0gIkxvZyBMaWtlbGlob29kIiwgCiAgICAgICAgICAgICAgICBMb2dMaWtfU0UgPSAiU0Ugb2YgTG9nIExpa2VsaWhvb2QiLCAKICAgICAgICAgICAgICAgIGJldGFfcyA9ICJUcmFuc21pc3Npb24gcmF0ZSIsCiAgICAgICAgICAgICAgICAjIFJlbGF0aXZlIFRyYW5zbWlzc2liaWxpdHkKICAgICAgICAgICAgICAgIGZyYWNfdHJhbnNfZSA9ICJSZWxhdGl2ZSB0cmFuc21pc3NpYmlsaXR5IG9mIGxhdGVudCBpbmZlY3Rpb25zIiwKICAgICAgICAgICAgICAgIGZyYWNfdHJhbnNfYSA9ICJSZWxhdGl2ZSB0cmFuc21pc3NpYmlsaXR5IG9mIGFzeW1wdG9tYXRpYyBpbmRpdmlkdWFscyIsCiAgICAgICAgICAgICAgICBmcmFjX3RyYW5zX2MgPSAiUmVsYXRpdmUgdHJhbnNtaXNzaWJpbGl0eSBvZiBkZXRlY3RlZCBzeW1wdG9tYXRpYyBpbmRpdmlkdWFscyBwb3N0LXJlcG9ydGluZyIsCiAgICAgICAgICAgICAgICBmcmFjX3RyYW5zX2ggPSAiUmVsYXRpdmUgdHJhbnNtaXNzaWJpbGl0eSBvZiBob3NwaXRhbGl6ZWQgaW5kaXZpZHVhbHMiLAogICAgICAgICAgICAgICAgIyBUaW1lIGluIGNvbXBhcnRtZW50cwogICAgICAgICAgICAgICAgdGltZV9lID0gIlRpbWUgc3BlbnQgaW4gbGF0ZW50IGNvbXBhcnRtZW50cyAoZGF5cykiLAogICAgICAgICAgICAgICAgdGltZV9hID0gIlRpbWUgc3BlbnQgaW4gYXN5bXB0b21hdGljIGNvbXBhcnRtZW50cyAoZGF5cykiLAogICAgICAgICAgICAgICAgdGltZV9zdSA9ICJUaW1lIHNwZW50IGluIHN5bXB0b21hdGljLCB1bmRldGVjdGVkIGNvbXBhcnRtZW50cyAoZGF5cykiLAogICAgICAgICAgICAgICAgdGltZV9zZCA9ICJUaW1lIHNwZW50IGluIHN5bXB0b21hdGljLCBkZXRlY3RlZCBjb21wYXJ0bWVudHMgKGRheXMpIiwKICAgICAgICAgICAgICAgIHRpbWVfYyA9ICJUaW1lIHNwZW50IGluIGRpYWdub3NlZCBjYXNlcyBjb21wYXJ0bWVudHMgKGRheXMpIiwKICAgICAgICAgICAgICAgIHRpbWVfaCA9ICJUaW1lIHNwZW50IGluIGhvc3BpdGFsaXplZCBjb21wYXJ0bWVudHMgKGRheXMpIiwKICAgICAgICAgICAgICAgICMgRGV0ZWN0aW9uIHRpbWUKICAgICAgICAgICAgICAgIG1heF9kaWFnX2ZhY3RvciA9ICJNYXhpbXVtIGZvciBmYWN0b3IgYnkgd2hpY2ggbW92ZW1lbnQgdGhyb3VnaCBJc2QgaGFwcGVucyBmYXN0ZXIgKHF1aWNrZXIgZGlhZ25vc2lzKSIsCiAgICAgICAgICAgICAgICBkaWFnX3JhbXB1cCA9ICJSYXRlIGF0IHdoaWNoIGZhc3RlciBkaWFnbm9zaXMgcmFtcHMgdXAgdG8gbWF4IiwKICAgICAgICAgICAgICAgIHRfaGFsZl9kaWFnID0gIlRpbWUgYXQgd2hpY2ggZGlhZ25vc2lzIGlzIGF0IDUwJSBvZiBtYXggKGluIGRheXMgc2luY2UgdCA9IDEpIiwKICAgICAgICAgICAgICAgICMgRGV0ZWN0aW9uIGZyYWN0aW9uCiAgICAgICAgICAgICAgICBtYXhfZGV0ZWN0X2ZyYWMgPSAiTWF4aW11bSBmcmFjdGlvbiBvZiBjYXNlcyB0aGF0IGFyZSBkZXRlY3RlZCIsCiAgICAgICAgICAgICAgICBkZXRlY3RfcmFtcHVwID0gIlNwZWVkIGF0IHdoaWNoIGZyYWN0aW9uIGRldGVjdGVkIHJhbXBzIHVwIiwKICAgICAgICAgICAgICAgIHRfaGFsZl9kZXRlY3QgPSAiVGltZSBhdCB3aGljaCBpbmZlY3Rpb24gZGV0ZWN0aW9uIGZyYWN0aW9uIGlzIGF0IDUwJSBvZiBtYXggKGluIGRheXMgc2luY2UgdCA9IDEpIiwKICAgICAgICAgICAgICAgIGJhc2VfZGV0ZWN0X2ZyYWMgPSAiTWluaW11bSBmcmFjdGlvbiBkZXRlY3RlZCBhdCB0ID0gMSIsCiAgICAgICAgICAgICAgICAjIEZyYWN0aW9uIGFzeW1wdG9tYXRpYwogICAgICAgICAgICAgICAgZnJhY19hc3ltID0gIkZyYWN0aW9uIG9mIGxhdGVudCBpbmZlY3Rpb25zIHRoYXQgbW92ZSB0byBhc3ltcHRvbWF0aWMiLAogICAgICAgICAgICAgICAgIyBGcmFjdGlvbiBob3NwdGlsaXplZAogICAgICAgICAgICAgICAgZnJhY19ob3NwID0gIkZyYWN0aW9uIG9mIGRldGVjdGVkIGNhc2VzIHRoYXQgYXJlIGhvc3BpdGFsaXplZCIsCiAgICAgICAgICAgICAgICAjIEZyYWN0aW9uIG9mIGhvc3BpdGFsaXphdGlvbnMgdGhhdCByZXN1bHQgaW4gZGVhdGgKICAgICAgICAgICAgICAgIG1pbl9mcmFjX2RlYWQgPSAiTWF4aW11bSBmcmFjdGlvbiBvZiBob3NwaXRhbGl6YXRpb25zIHRoYXQgcmVzdWx0IGluIGRlYXRoIiwKICAgICAgICAgICAgICAgIG1heF9mcmFjX2RlYWQgPSAiTWF4aW11bSBmcmFjdGlvbiBvZiBob3NwaXRhbGl6YXRpb25zIHRoYXQgcmVzdWx0IGluIGRlYXRoIiwKICAgICAgICAgICAgICAgIGxvZ19oYWxmX2RlYWQgPSAiVGltZSBhdCB3aGljaCBkZWF0aCBmcmFjdGlvbiBpcyBhdCA1MCUgb2YgbWF4IChpbiBkYXlzIHNpbmNlIHQgPSAxKSIsCiAgICAgICAgICAgICAgICAjIERpc3BlcnNpb24gcGFyYW1ldGVycwogICAgICAgICAgICAgICAgdGhldGFfY2FzZXMgPSAiRGlzcGVyc2lvbiBwYXJhbWV0ZXIgZm9yIGNhc2UgcmVwb3J0aW5nIG9ic2VydmF0aW9uIHByb2Nlc3MiLAogICAgICAgICAgICAgICAgdGhldGFfaG9zcHMgPSAiRGlzcGVyc2lvbiBwYXJhbWV0ZXIgZm9yIGhvc3BpdGFsaXphdGlvbiByZXBvcnRpbmcgb2JzZXJ2YXRpb24gcHJvY2VzcyIsCiAgICAgICAgICAgICAgICB0aGV0YV9kZWF0aHMgPSAiRGlzcGVyc2lvbiBwYXJhbWV0ZXIgZm9yIGRlYXRoIHJlcG9ydGluZyBvYnNlcmNhdGlvbiBwcm9jZXNzIiwKICAgICAgICAgICAgICAgIHNpZ21hX2R3ID0gIlZhcmlhbmNlIG9mIHRoZSBzdG9jaGFzdGljcyBwcm9jZXNzIG5vaXNlIiwKICAgICAgICAgICAgICAgICMgU3BsaW5lIGNvZWZmaWNpZW50cwogICAgICAgICAgICAgICAgc3BsaW5lX2NvZWZmaWNpZW50cywKICAgICAgICAgICAgICAgICMgSW5pdGlhbCBjb25kaXRpb25zCiAgICAgICAgICAgICAgICBTXzAgPSAiSW5pdGlhbCBudW1iZXIgb2Ygc3VzY2VwdGlibGUgaW5kaXZpZHVhbHMgb24gdCA9IDEiLAogICAgICAgICAgICAgICAgRTFfMCA9ICJJbml0aWFsIG51bWJlciBvZiBsYXRlbnQgaW5mZWN0aW91cyBpbmRpdmlkdWFscyBvbiB0ID0gMSIsCiAgICAgICAgICAgICAgICBJYTFfMCA9ICJJbml0aWFsIG51bWJlciBvZiBhc3ltcHRvbWF0aWMgaW5kaXZpZHVhbHMgb24gdCA9IDEiLAogICAgICAgICAgICAgICAgSXN1MV8wID0gIkluaXRpYWwgbnVtYmVyIG9mIHN5bXB0b21hdGljLCB1bmRldGVjdGVkIGluZGl2aWR1YWxzIG9uIHQgPSAxIiwKICAgICAgICAgICAgICAgIElzZDFfMCA9ICJJbml0aWFsIG51bWJlciBvZiBzeW1wdG9tYXRpYywgZGV0ZWN0ZWQgaW5kaXZpZHVhbHMgb24gdCA9IDEiLAogICAgICAgICAgICAgICAgQzFfMCA9ICJJbml0aWFsIG51bWJlciBvZiBkaWFnbm9zZWQgY2FzZXMgb24gdCA9IDEiLAogICAgICAgICAgICAgICAgSDFfMCA9ICJJbml0aWFsIG51bWJlciBvZiBob3NwaXRhbGl6ZWQgY2FzZXMgb24gdCA9IDEiLAogICAgICAgICAgICAgICAgUl8wID0gIkluaXRpYWwgbnVtYmVyIG9mIHJlY292ZXJlZCBpbmRpdmlkdWFscyBvbiB0ID0gMSIsCiAgICAgICAgICAgICAgICBEXzAgPSAiSW5pdGlhbCBudW1iZXIgb2YgZGVhdGhzIGFmdGVyIGhvc3BpdGFsaXphdGlvbiBvbiB0ID0gMSIsCiAgICAgICAgICAgICAgICB0cmVuZF9zdGFydCA9ICJUcmVuZCIpCgp0bXBwYXJhbXMgPC0gcmVhZFJEUyh0bXBwYXJhbWZpbGUpCnJubXMgPC0gcm93Lm5hbWVzKHRtcHBhcmFtcykKcGFyYW1zX21hcCA8LSB0aWJibGUoUGFyYW1ldGVyID0gbmFtZXMocGFyYW1zX3ZlYyksCiAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0gcGFyYW1zX3ZlYykKZml4ZWRfcGFyYW1ldGVycyA8LSB0bXBwYXJhbXMgJT4lCiAgbXV0YXRlKFBhcmFtZXRlciA9IHJubXMpICU+JQogIGZpbHRlcihpc19maXR0ZWQgPT0gIm5vIikgJT4lCiAgZHBseXI6OnNlbGVjdCgtaXNfZml0dGVkKSAlPiUKICBnYXRoZXIoImtleSIsICJ2YWx1ZSIsIC1QYXJhbWV0ZXIpICU+JQogIGZpbHRlcihrZXkgPT0gIlgxIikgJT4lCiAgbGVmdF9qb2luKHBhcmFtc19tYXAsIGJ5ID0gIlBhcmFtZXRlciIpICU+JQogIGZpbHRlcighUGFyYW1ldGVyICVpbiUgYygiTUlGX0lEIiwgIkxvZ0xpayIsICJMb2dMaWtfU0UiLCAidHJlbmRfc3RhcnQiLCAidGhldGFfaG9zcHMiLCAiU18wIikpICU+JQogIGRwbHlyOjpzZWxlY3QoUGFyYW1ldGVyLCBEZXNjcmlwdGlvbiwgdmFsdWUpICU+JQogIG11dGF0ZShQYXJhbWV0ZXIgPSBpZmVsc2UoUGFyYW1ldGVyID09ICJFMV8wIiwgIkwxXzAiLCBQYXJhbWV0ZXIpKQoKYGBgCgojIENvcnJlbGF0aW9uIGJldHdlZW4gTGF0ZW50IFRyZW5kIGFuZCBUcmFuc21pc3Npb24KCmEpIG1vYmlsaXR5IHRyZW5kIGZvciBhbGwgc3RhdGVzIChzcGFnaGV0dGkgd2l0aCBtZWFuKS4gIAoKQ292YXJpYXRlIHRoYXQgZGVzY3JpYmVzIGh1bWFuIG1vYmlsaXR5LiBUaGVzZSBkYXRhIGNvbWUgZnJvbSA8YSBocmVmPSJodHRwczovL3d3dy51bmFjYXN0LmNvbS8iIHRhcmdldD0iX2JsYW5rIj5VbmFjYXN0PC9hPi4gV2Ugc21vb3RoIHRoZSByYXcgZGF0YSBmcm9tIFVuYWNhc3QgdXNpbmcgYSBzcGxpbmUgZml0LCByZXN1bHRpbmcgaW4gdGhlIHRyYWplY3RvcmllcyBvZiBodW1hbiBtb3ZlbWVudCBzaG93biBiZWxvdy4gVGhpcyBjb3ZhcmlhdGUgaXMgdXNlZCB0byByZWR1Y2UgYmFzZWxpbmUgdHJhbnNtaXNzaW9uLgpIZXJlIHdlIHNob3cgdGhlIG1vYmlsaXR5IHRyZW5kcyBmcm9tIGFsbCA1MCBzdGF0ZXMuCgpgYGB7ciBjb3ZhcmlhdGUsIGZpZy5oZWlnaHQ9MywgZmlnLndpZHRoPTcsIGV2YWwgPSBUUlVFfQphbGxfcGhpIDwtIHN0YXRlX3N1bW1hcmllcyAlPiUKICBmaWx0ZXIodmFyaWFibGUgPT0gIm1vYmlsaXR5X3RyZW5kIikgJT4lCiAgZHBseXI6OnNlbGVjdChsb2NhdGlvbiwgZGF0ZSwgbWVhbl92YWx1ZSkgJT4lCiAgZmlsdGVyKGRhdGUgPD0gU3lzLkRhdGUoKSkKCm1lYW5fcGhpIDwtIGFsbF9waGkgJT4lIGdyb3VwX2J5KGRhdGUpICU+JSBzdW1tYXJpc2UobWVhbl92YWx1ZSA9IG1lYW4obWVhbl92YWx1ZSkpCgpnX3BoaSA8LSBnZ3Bsb3QoYWxsX3BoaSwgYWVzKHggPSBkYXRlLCB5ID0gbWVhbl92YWx1ZSwgY29sb3IgPSBsb2NhdGlvbikpICsKICBnZW9tX2xpbmUoc2l6ZSA9IDAuNSkgKwogICMgeWxhYigiSHVtYW4gbW92ZW1lbnRcbiglIG9mIG5vcm1hbCkiKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwxKSwgbGFiZWxzID0gc2NhbGVzOjpwZXJjZW50KSArCiAgc2NhbGVfY29sb3JfdmlyaWRpc19kKG9wdGlvbiA9ICJEIiwgZGlyZWN0aW9uID0gLTEsIGFscGhhID0gLjYsIGVuZCA9IC43NSkgKwogICMgdGhlbWVfZGFyayhiYXNlX2xpbmVfc2l6ZSA9IDAuNSkgKwogIGdlb21fbGluZShkYXRhID0gbWVhbl9waGksIGFscGhhID0gLjYsIHNpemUgPSAyLCBjb2xvciA9ICdyZWQnLCBuYW1lPSJNZWFuIG9mIGFsbCBzdGF0ZXMiKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBndWlkZXMoY29sb3IgPSBGQUxTRSkKCnBfcGhpIDwtIGdfcGhpICU+JSBwbG90bHk6OmdncGxvdGx5KCkgJT4lIAogIHBsb3RseTo6bGF5b3V0KHNob3dsZWdlbmQgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAjIG1hcmdpbiA9IGxpc3QobCA9IDE1MCksCiAgICAgICAgICAgICAgICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIkh1bWFuIG1vdmVtZW50IChwaGkpXG4oJSBvZiBub3JtYWwpXG4mbmJzcDsiKQogICAgICAgICAgICAgICAgICkKcF9waGkKYGBgCgpiKSBsYXRlbnQgdHJlbmQgZm9yIGFsbCBzdGF0ZXMgKHNwYWdoZXR0aSB3aXRoIG1lYW4pLiAgCgpgYGB7cn0KYWxsX3BzaSA8LSBzdGF0ZV9zdW1tYXJpZXMgJT4lCiAgZmlsdGVyKHZhcmlhYmxlID09ICJsYXRlbnRfdHJlbmQiKSAlPiUKICBkcGx5cjo6c2VsZWN0KGxvY2F0aW9uLCBkYXRlLCBtZWFuX3ZhbHVlKSAlPiUKICBmaWx0ZXIoZGF0ZSA8PSBTeXMuRGF0ZSgpKQoKbWVhbl9wc2kgPC0gYWxsX3BzaSAlPiUgZ3JvdXBfYnkoZGF0ZSkgJT4lIHN1bW1hcmlzZShtZWFuX3ZhbHVlID0gbWVhbihtZWFuX3ZhbHVlKSkKCmdfcHNpIDwtIGdncGxvdChhbGxfcHNpLCBhZXMoeCA9IGRhdGUsIHkgPSBtZWFuX3ZhbHVlLCBjb2xvciA9IGxvY2F0aW9uKSkgKwogIGdlb21fbGluZShzaXplID0gMC41KSArCiAgIyB5bGFiKCJMYXRlbnQgdHJlbmRcbiglIG9mIG5vcm1hbCkiKSArCiAgc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cyA9IGMoMCwxKSwgbGFiZWxzID0gc2NhbGVzOjpwZXJjZW50KSArCiAgc2NhbGVfY29sb3JfdmlyaWRpc19kKG9wdGlvbiA9ICJEIiwgZGlyZWN0aW9uID0gLTEsIGFscGhhID0gLjYsIGVuZCA9IC43NSkgKwogICMgdGhlbWVfZGFyayhiYXNlX2xpbmVfc2l6ZSA9IDAuNSkgKwogIGdlb21fbGluZShkYXRhID0gbWVhbl9wc2ksIGFscGhhID0gLjYsIHNpemUgPSAyLCBjb2xvciA9ICdyZWQnLCBuYW1lPSJNZWFuIG9mIGFsbCBzdGF0ZXMiKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBndWlkZXMoY29sb3IgPSBGQUxTRSkKCnBfcHNpIDwtIGdfcHNpICU+JSBwbG90bHk6OmdncGxvdGx5KCkgJT4lIAogIHBsb3RseTo6bGF5b3V0KHNob3dsZWdlbmQgPSBGQUxTRSwKICAgICAgICAgICAgICAgICAjIG1hcmdpbiA9IGxpc3QobCA9IDE1MCksCiAgICAgICAgICAgICAgICAgeWF4aXMgPSBsaXN0KHRpdGxlID0gIkxhdGVudCB0cmVuZCAocHNpKVxuKCUgb2Ygbm9ybWFsKVxuJm5ic3A7IikKICAgICAgICAgICAgICAgICApCnBfcHNpCmBgYAoKYykgb21lZ2EgZm9yIGFsbCBzdGF0ZXMgKHNwYWdoZXR0aSB3aXRoIG1lYW4pLiAKCmBgYHtyfQphbGxfb21lZ2EgPC0gc3RhdGVfc3VtbWFyaWVzICU+JQogIGZpbHRlcih2YXJpYWJsZSA9PSAib21lZ2EiKSAlPiUKICBkcGx5cjo6c2VsZWN0KGxvY2F0aW9uLCBkYXRlLCBtZWFuX3ZhbHVlKSAlPiUKICBmaWx0ZXIoZGF0ZSA8PSBTeXMuRGF0ZSgpKQoKbWVhbl9vbWVnYSA8LSBhbGxfb21lZ2EgJT4lIGdyb3VwX2J5KGRhdGUpICU+JSBzdW1tYXJpc2UobWVhbl92YWx1ZSA9IG1lYW4obWVhbl92YWx1ZSkpCgpnX29tZWdhIDwtIGdncGxvdChhbGxfb21lZ2EsIGFlcyh4ID0gZGF0ZSwgeSA9IG1lYW5fdmFsdWUsIGNvbG9yID0gbG9jYXRpb24pKSArCiAgZ2VvbV9saW5lKHNpemUgPSAwLjUpICsKICAjIHlsYWIoIkxhdGVudCB0cmVuZFxuKCUgb2Ygbm9ybWFsKSIpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobGltaXRzID0gYygwLDEpLCBsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnQpICsKICBzY2FsZV9jb2xvcl92aXJpZGlzX2Qob3B0aW9uID0gIkQiLCBkaXJlY3Rpb24gPSAtMSwgYWxwaGEgPSAuNiwgZW5kID0gLjc1KSArCiAgIyB0aGVtZV9kYXJrKGJhc2VfbGluZV9zaXplID0gMC41KSArCiAgZ2VvbV9saW5lKGRhdGEgPSBtZWFuX29tZWdhLCBhbHBoYSA9IC42LCBzaXplID0gMiwgY29sb3IgPSAncmVkJywgbmFtZT0iTWVhbiBvZiBhbGwgc3RhdGVzIikgKwogIHRoZW1lX21pbmltYWwoKSArCiAgZ3VpZGVzKGNvbG9yID0gRkFMU0UpCgpwX29tZWdhIDwtIGdfb21lZ2EgJT4lIHBsb3RseTo6Z2dwbG90bHkoKSAlPiUgCiAgcGxvdGx5OjpsYXlvdXQoc2hvd2xlZ2VuZCA9IEZBTFNFLAogICAgICAgICAgICAgICAgICMgbWFyZ2luID0gbGlzdChsID0gMTUwKSwKICAgICAgICAgICAgICAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAiUmVsYXRpdmUgdHJhbnNtaXNzaW9uIChvbWVnYSlcbiglIG9mIG5vcm1hbClcbiZuYnNwOyIpCiAgICAgICAgICAgICAgICAgKQpwX29tZWdhCmBgYAoKZCkgY29ycmVsYXRpb246IHByZWRpY3RvciA9IEFVQyBvZiBvbWVnYTsgcmVzcG9uc2UgPSBwcmV2YWxlbmNlLCBvciBmaW5hbCBwZXIgY2FwaXRhIHByZXZhbGVuY2UuIAoKYGBge3J9CgpgYGAKCmUpIG1hcCBvZiBzYW1lIChjb3JyZWxhdGlvbiwgYnkgc3RhdGUpCgoK